<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div id="app">
    <h1>今天天气很{{info}}</h1>
    <button @click="changeFlag">切换天气</button>
</div>
<script src="../JavaScript/vue.js"></script>
<script>
    /*
    * 监视属性
    *   当被监视的属性发生变化的时候，回调函数会被自动调用
    *   监视的属性必须存在才能进行监视
    * 监视属性的两种写法：
    *   newVue的时候传入watch配置项
    *   通过vm.$watch()
    * */
    const vm = new Vue({
        el: "#app",
        data: {
            isFlag: true,
        },
        methods: {
            changeFlag() {
                this.isFlag = !this.isFlag
            }
        },
        computed: {
            info() {
                return this.isFlag ? "炎热" : "凉爽"
            }
        },
        watch: {
            // 监视属性完整写法
            isFlag: {
                // handler函数什么时候调用？当isFlag发生改变的时候调用 newValue修改后的新值 oldValue修改之前的值
                handler(newValue, oldValue) {
                    console.log(newValue, oldValue)
                },
                deep: true,//深度监听 true开启 false关闭 默认false
                immediate: true // 立即开启监听让handler函数调用 true开启 false关闭 默认是false
            },
            // 监视属性完整写法
            info: {
                handler(newValue, oldValue) {
                    console.log(newValue, oldValue)
                },
                deep: true,
                immediate: true
            },

            // 监视属性简写
            isFlag(newV,oldV){
                console.log(newV,oldV)
            }
        }
    })

    /*vm.$watch("isFlag",{
        handler(newValue, oldValue) {
            console.log(newValue, oldValue)
        },
        deep: true,
    })*/

    /*vm.$watch("isFlag",(newValue, oldValue)=>{
        console.log(newValue, oldValue)
    })*/
</script>
</body>
</html>
